package com.jiangxjsy.core.security;

import com.jiangxjsy.core.security.kit.EncodedCredential;

/**
 * wukong-crm-master
 * 蒋胜宇
 * 2025/6/5 13:49
 */

public interface PasswordEncoder {
    /**
     * 加密原始密码
     *
     * @param rawPassword 原始密码（明文）
     * @param salt 盐值
     * @return 加密后的密码（包含算法标识）
     */
    EncodedCredential encode(CharSequence rawPassword, String salt);

    /**
     * 加密原始密码
     *
     * @param rawPassword 原始密码（明文）
     * @return 加密后的密码（包含算法标识）
     */
    EncodedCredential encode(CharSequence rawPassword);

    /**
     * 验证密码是否匹配
     *
     * @param rawPassword 原始密码（明文）
     * @param credential 已加密的凭证（含盐值和算法）
     * @return 是否匹配
     */
    boolean matches(CharSequence rawPassword, EncodedCredential credential);

    /**
     * 获取算法名称
     *
     * @return 算法名称
     */
    String getAlgorithm();
}
